unit uExemplo;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  Menus, TDIPageControl, ExtCtrls, ComCtrls, DBGrids;

type

  { TfrmExemplo }

  TfrmExemplo = class(TForm)
    miMultiLinhas: TMenuItem;
    miEsquerda: TMenuItem;
    miAbaixo: TMenuItem;
    miDireita: TMenuItem;
    miAcima: TMenuItem;
    miSair: TMenuItem;
    miAbrirForm2: TMenuItem;
    miAbrirForm1: TMenuItem;
    mmExemplo: TMainMenu;
    pcExemplo: TTDIPageControl;
    ppmExemplo: TPopupMenu;
    sbExemplo: TStatusBar;
    procedure FormCreate(Sender: TObject);
    procedure miAbaixoClick(Sender: TObject);
    procedure miAbrirForm1Click(Sender: TObject);
    procedure miAbrirForm2Click(Sender: TObject);
    procedure miAcimaClick(Sender: TObject);
    procedure miDireitaClick(Sender: TObject);
    procedure miEsquerdaClick(Sender: TObject);
    procedure miMultiLinhasClick(Sender: TObject);
    procedure miSairClick(Sender: TObject);
  private
    { private declarations }
    procedure SetForm(const AFormClass: TFormClass; const ACaption: TCaption = '';
                      const AIndex: Integer = 0);
  public
    { public declarations }
  end; 

var
  frmExemplo: TfrmExemplo;

implementation

uses
  uForm1, uForm2, uBase;

{$R *.lfm}

{ TfrmExemplo }

procedure TfrmExemplo.miAbrirForm1Click(Sender: TObject);
begin
  SetForm(TfrmForm1, 'Formulário 1');
end;

procedure TfrmExemplo.FormCreate(Sender: TObject);
begin
  SetForm(TfrmBase, 'NTech Desenvolvimento e Tecnologia');
  frmBase := TfrmBase.Create(nil);
  pcExemplo.BaseForm := TfrmBase;
  WindowState := wsMaximized;
end;

procedure TfrmExemplo.miAbaixoClick(Sender: TObject);
begin
  miAcima.Checked := False;
  miAbaixo.Checked := True;
  miDireita.Checked := False;
  miEsquerda.Checked := False;
  pcExemplo.TabPosition := tpBottom;
end;

procedure TfrmExemplo.miAbrirForm2Click(Sender: TObject);
begin
  SetForm(TfrmForm2, 'Formulário 2');
end;

procedure TfrmExemplo.miAcimaClick(Sender: TObject);
begin
  miAcima.Checked := True;
  miAbaixo.Checked := False;
  miDireita.Checked := False;
  miEsquerda.Checked := False;
  pcExemplo.TabPosition := tpTop;
end;

procedure TfrmExemplo.miDireitaClick(Sender: TObject);
begin
  miAcima.Checked := False;
  miAbaixo.Checked := False;
  miDireita.Checked := True;
  miEsquerda.Checked := False;
  pcExemplo.TabPosition := tpRight;
end;

procedure TfrmExemplo.miEsquerdaClick(Sender: TObject);
begin
  miAcima.Checked := False;
  miAbaixo.Checked := False;
  miDireita.Checked := False;
  miEsquerda.Checked := True;
  pcExemplo.TabPosition := tpLeft;
end;

procedure TfrmExemplo.miMultiLinhasClick(Sender: TObject);
begin
  miMultiLinhas.Checked := not miMultiLinhas.Checked;
  pcExemplo.MultiLine := miMultiLinhas.Checked;
end;

procedure TfrmExemplo.miSairClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmExemplo.SetForm(const AFormClass: TFormClass; const ACaption:
  TCaption; const AIndex: Integer);
begin
  if (pcExemplo.PageCount = 1) and (pcExemplo.Pages[0].Caption = 'NTech Desenvolvimento e Tecnologia') then
    pcExemplo.SetPageForm(0, AFormClass, ACaption, AIndex)
  else
    pcExemplo.CreatePageForm(AFormClass, ACaption, AIndex);
end;

end.

